package com.springapi.service;

import com.github.pagehelper.PageInfo;
import com.springapi.entity.Maillist;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

import java.util.Date;
import java.util.List;

/**
 * 快递列表(Maillist)表服务接口
 *
 * @author makejava
 * @since 2025-01-13 20:37:16
 */
public interface MaillistService {



    /**
     * 通过appid和shopid查询店铺发送短信失败的包裹
     */
    List<Maillist> findlistbysendmsg( int appid,int shopid );

    /**
     * 通过appid和shopid以及shelfnumber（货架号）查询目前最新取件码
     */
    Integer getnewpkcode( int appid,int shopid ,String shelfnumber );

    /**
     * 通过appid和shopid查询店铺未出库包裹
     */
    Integer findbynoout(int appid,int shopid );


    /**
     * 通过appid和shopid查询店铺全部包裹
     */
    Integer findbyin(int appid,int shopid );

    /**
     * 通过appid和shopid查询店铺指定时间段入库包裹数量
     */
    Integer findbyintime( int appid,int shopid,Date intime1, Date intime2 );


    /**
     * 通过appid和shopid查询店铺指定时间段出库包裹数量
     */
    Integer findbyouttime( int appid, int shopid, Date outtime1,Date outtime2 );


    /**
     * 通过appid和shopid查询店铺超过入库时间多少天没有出库的异常件数量
     */
    Integer findbyabnormal( int appid, int shopid,Integer days );


    List<Maillist> findlistbyabnormal( int appid, int shopid, Integer days );



    List<Maillist> findbywaybill(int appid,int shopid,String waybill);


    /**
     * 通过appid和shopid分页查询数据,可传id，shelfnumber，name，mobile
     */
    PageInfo<Maillist> myfindAll(int appid, int shopid , int page, int size, String isout , String waybill , String pkcodestr , String name , String mobile);


    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Maillist queryById(Integer id);

    /**
     * 分页查询
     *
     * @param maillist 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    Page<Maillist> queryByPage(Maillist maillist, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param maillist 实例对象
     * @return 实例对象
     */
    Maillist insert(Maillist maillist);

    /**
     * 修改数据
     *
     * @param maillist 实例对象
     * @return 实例对象
     */
    Maillist update(Maillist maillist);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

}
